interface FurryMammal {
	String getFurColor();
	String getCommonName();
}

interface Pet {
	String getPetName();
}

abstract class Feline implements FurryMammal {
	public String getCommonName() {
		return "Cat";
	}
}

abstract class Canine implements FurryMammal {
	public String getCommonName() {
		return "Dog";
	}
}

public class TabbyCat extends Feline implements Pet {
	private String petName;

	public TabbyCat(String petName) {
		this.petName = petName;
	}

	public String getPetName() {
		return this.petName;
	}

	public String getFurColor() {
		return "Dark Gray";
	}

	public static void main(String[] args) {
		TabbyCat tabitha = new TabbyCat("Tabitha");

		System.out.printf("I have a %s named %s whose fur is %s",
			tabitha.getCommonName(), tabitha.getPetName(),
			tabitha.getFurColor());
	}
}
